package com.pactera.asmp.server.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.pactera.asmp.server.common.utils.FastJsonUtil;
import net.sf.oval.constraint.NotNull;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * @ProjectName: tlsserver
 * @Package com.pactera.asmp.server.pojo
 * @ClassName: DeviceInfo
 * @Description: 设备描述
 * @Date 2020/06/22 17:39
 * @Author lvzhiqiang
 * @Version 1.0
 */
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class DeviceInfo implements Serializable {

    private Integer id;
    /**
     * 设备唯一标识码
     * 防止有些设备所有的deviceid都是一样的导致无法区分
     */
    private String duid;
    /**
     * vin码
     */
    private String vin;
    /**
     * 设备序列号
     */
    private String sn;
    /**
     * 设备名
     */
    private String name;
    /**
     * 设备型号
     */
    private String model;

    /**
     * 品牌
     */
    private String brand;
    /**
     * 平台\n0-android\n1-iOS\n2-IOT
     */
    private int platform;
    /**
     * cpu类型
     */
    private String cpuAbi;
    /**
     * SDK 版本
     */
    private int sdkVersion;
    /**
     * 系统版本号
     */
    private String versionCode;
    /**
     * 设备状态\n0-空闲\n1-占用\n2-断线
     */
    private int status;
    /**
     * 屏幕高
     */
    private int height;
    /**
     * 屏幕宽
     */
    private int width;
    /**
     * 设备注册时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime registerTime;
    /**
     * 设备断开时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime disconnectTime;
    /**
     * 设备示意图片索引
     */
    private String iconIndex;
    /**
     * 控制这台设备的上位机ID
     */
    private Integer masterComputerId;
    /**
     * 最后使用这台设备的用户id
     */
    @NotNull
    private Integer userId;    // 暂时不用，因为终端设备无法传递过来
    /**
     * 使用上位机配置指定设备的主人
     */
    private Integer masterUid;
    /**
     * 当前谁使用该设备，其用户名
     */
    private String userName;// 暂时不用，因为终端设备无法传递过来

    /**
     * 任务Id, 当设备正在执行任务，且断线重连时，告诉后端服务，当前设备正在执行的任务Id
     */
    private Integer taskId;

    /**
     * 任务的创建人Id, 不需要前端传递，后台自行查询
     */
    private Integer taskUserId;
    /**
     * 任务的创建人姓名, 不需要前端传递，后台自行查询
     */
    private String taskUserName;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 是否辅助设备 0否1是
     */
    private int isAuxiliary=0;

    /**
     * 多屏ids
     */
    private List<String> displayIDs;

    /**
     * 多屏ids
     */
    private String displayIdsStr;

    /**
     * 设备类型
     */
    private Integer type;

  //  @JsonIgnore
    private Boolean auxiliary=false;

    public Boolean getAuxiliary() {
        if(!auxiliary) return isAuxiliary>0;
        return auxiliary;
    }

    @Override
    public String toString() {
        return FastJsonUtil.BeanToJson(this);
    }

}
